package 字符串算法;

public class 反转字符串Ⅱ {
    //解法一
    class Solution{
        public String reverseStr(String s ,int k ){
            char[] ch = s.toCharArray();
            // 1. 每隔 2k 个字符的前 k 个字符进行反转
            for (int i = 0; i< ch.length; i += 2 * k) {
                // 2. 剩余字符小于 2k 但大于或等于 k 个，则反转前 k 个字符
                if (i + k <= ch.length) {
                    reverse(ch, i, i + k -1);
                    continue;
                }
                // 3. 剩余字符少于 k 个，则将剩余字符全部反转
                reverse(ch, i, ch.length - 1);
            }
            return  new String(ch);
        }

        private void reverse(char[] res, int l, int k) {
            while (l<k){
              char temp = res[l];
              res[l] = res[k];
              res[k] = temp;
              l++;
              k--;
            }
        }
    }



}
